﻿using System;
using System.ComponentModel;

namespace SksApp
{
    public enum OdemeTip : byte
    {
        [Description("Nakit")]
        Nakit = 0,
        [Description("Kredi Kartı")]
        KrediKarti = 1,
        [Description("Açık Hesap")]
        AcikHesap = 2
    }

    [DisplayName("Vergiler")]
    public class RprKdv
    {
        [DisplayName("Oran")]
        public decimal Oran { get; set; }
        [DisplayName("Kdv Tutarı")]
        public decimal KdvTutari { get; set; }
        [DisplayName("Ciro")]
        public decimal Ciro { get; set; }

        public override string ToString()
        {
            return this.Oran.ToString("00");
        }
    }

    [DisplayName("Ödeme Tipleri")]
    public class RprOdeme
    {
        [DisplayName("Ödeme Adı")]
        public string Adi { get; set; }

        [DisplayName("Ödeme Şekli")]
        public string Tip { get; set; }

        [DisplayName("Ödeme Adedi")]
        public int Adet { get; set; }

        [DisplayName("Ödeme Tutarı")]
        public decimal Tutari { get; set; }
    }

    [DisplayName("Belge Toplamları")]
    public class RprBelgeToplami
    {
        [DisplayName("Belge Tipi")]
        public string Adi { get; set; }

        [DisplayName("Belge Adedi")]
        public int Adet { get; set; }

        [DisplayName("İndirim Tutarı")]
        public decimal IndirimTutari { get; set; }

        [DisplayName("Belge Net Tutarı")]
        public decimal Tutari { get; set; }
    }

    public class Rapor
    {
        private BindingList<RprOdeme> _odemeler = new BindingList<RprOdeme>();
        private BindingList<RprKdv> _fis_kdvler = new BindingList<RprKdv>();
        private BindingList<RprKdv> _faura_kdvler = new BindingList<RprKdv>();
        private BindingList<RprKdv> _iade_kdvler = new BindingList<RprKdv>();
        private BindingList<RprBelgeToplami> _belge_toplamlari = new BindingList<RprBelgeToplami>();

        #region Detaylılar
        [DisplayName("Fiş Kdv Detayları")]
        public BindingList<RprKdv> FisKdvler { get { return _fis_kdvler; } set { _fis_kdvler = value; } }

        [DisplayName("Fatura Kdv Detayları")]
        public BindingList<RprKdv> FaturaKdvler { get { return _faura_kdvler; } set { _faura_kdvler = value; } }

        [DisplayName("İade Kdv Detayları")]
        public BindingList<RprKdv> IadeKdvler { get { return _iade_kdvler; } set { _iade_kdvler = value; } }

        [DisplayName("Ödeme Detayları")]
        public BindingList<RprOdeme> Odemeler { get { return _odemeler; } set { _odemeler = value; } }

        [DisplayName("Belge Toplamları")]
        public BindingList<RprBelgeToplami> BelgeToplamlari { get { return _belge_toplamlari; } set { _belge_toplamlari = value; } }
        #endregion

        [DisplayName("Tarih")]
        public DateTime Tarih { get; set; }

        [DisplayName("Kasiyer Kodu")]
        public string KasiyerKodu { get; set; }

        [DisplayName("Kasiyer Adı")]
        public string KasiyerAdi { get; set; }

        [DisplayName("Kasa No")]
        public int KasaNo { get; set; }

        [DisplayName("İndirim Toplamı")]
        public decimal IndirimToplami { get; set; }

        [DisplayName("Ödemeler Toplamı")]
        public decimal OdemelerToplami { get; set; }

        [DisplayName("Kasa Nakit Mevcudu")]
        public decimal KasaNakitMevcudu { get; set; }

        [DisplayName("Kasa Avans Tutarı")]
        public decimal KasaAvansMevcudu { get; set; }

        [DisplayName("Kasa Çekme Tutarı")]
        public decimal KasaCekmeMevcudu { get; set; }

        [DisplayName("İptal Fiş Miktarı")]
        public int IptalFisAdedi { get; set; }

        [DisplayName("İptal Fiş Tutarı")]
        public decimal IptalFisTutari { get; set; }

        [DisplayName("Fiş Adedi")]
        public decimal GenelToplamFisAdedi { get; set; }

        [DisplayName("Fiş Ciro")]
        public decimal GenelToplamFisCiro { get; set; }

        [DisplayName("Fiş Kdv Tutarı")]
        public decimal GenelToplamFisKdvTutari { get; set; }

        [DisplayName("Fatura Adedi")]
        public decimal GenelToplamFaturaAdedi { get; set; }

        [DisplayName("Fatura Ciro")]
        public decimal GenelToplamFaturaCiro { get; set; }

        [DisplayName("Fatura Kdv Tutarı")]
        public decimal GenelToplamFaturaKdvTutari { get; set; }

        [DisplayName("İade Adedi")]
        public decimal GenelToplamIadeAdedi { get; set; }

        [DisplayName("İade Ciro")]
        public decimal GenelToplamIadeCiro { get; set; }

        [DisplayName("İade Kdv Tutarı")]
        public decimal GenelToplamIadeKdvTutari { get; set; }

        [DisplayName("Tahsilat Tutarı")]
        public decimal TahsilatTutari { get; set; }

        [DisplayName("Tediye Tutarı")]
        public decimal TediyeTutari { get; set; }


    }
}
